package com.wlc.io;

import java.io.*;
import java.util.Locale;
import java.util.Scanner;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description System.in/System.out
 * @date 2021-07-11 09:06
 */
public class SystemIn {

    /**
     * 使用System.in 在控制台上面输入数据
     */
    public static void method01() {
        try (InputStream inputStream = System.in) {
            while (true) {
                int read = inputStream.read();
                System.out.println(read);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 使用Scanner读取数据
     */
    public static void method02() {
        Scanner scanner = new Scanner(System.in);
        // 使用while(true) 可以一直在控制台输入数据
        while (true) {
            int i = scanner.nextInt();
            System.out.println("i = " + i);
        }
    }

    public static void method03() {
        Scanner scanner = new Scanner(System.in);
        if (scanner.hasNext()) {
            System.out.println("scanner.next() = " + scanner.next());
        }
    }

    private static final String FILE_PATH = "/Users/wanglichao/Desktop/temp/model.txt";

    /**
     * 通过使用模版文件，读取出来模版文件，然后替换所有的内容，然后把最终的内容输出到新的文件中
     */
    public static void method04() {
        // 读取文件
        File file = new File("/Users/wanglichao/Desktop/temp/model.txt");
        String content = null;
        try (FileReader fileReader = new FileReader(file);) {
            char[] chars = new char[(int) file.length()];
            fileReader.read(chars);
            content = new String(chars);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 打印内容
        System.out.println("content = " + content);
        // 接收用户的输入
        Scanner scanner = new Scanner(System.in);
        // 替换用户输入的类名；类型；属性名；
        System.out.println("请输入类名：");
        String className = scanner.nextLine();
        System.out.println("请输入类型： ");
        String type = scanner.nextLine();
        System.out.println("请输入属性名称：");
        String property = scanner.nextLine();
        System.out.println("请输入文件名称");
        String title = scanner.nextLine();

        // 设置构造方法的首字母大写   首字母大写+截取首字母之后的文字拼接
        String upProperty = Character.toUpperCase(property.charAt(0)) + property.substring(1);

        // 替换所有的类名；属性名；类型
        content = content.replaceAll("@class@", className);
        content = content.replaceAll("@type@", type);
        content = content.replaceAll("@property@", property);
        content = content.replaceAll("@Uproperty@", upProperty);
        // 打印新的文件内容
        System.out.println(content);
        // 使用PrintWriter 写入新文件中
        File file1 = new File("/Users/wanglichao/Desktop/temp/" + title + ".java");
        try (FileWriter fileWriter = new FileWriter(file1);
             PrintWriter printWriter = new PrintWriter(fileWriter)) {
            printWriter.write(content);
            printWriter.flush();
            System.out.println("文件写入完成。。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    /***
     * 输入一个英文，首字母大写，并返回
     * @param str
     * @return
     */
    public static String upCase(String str) {
        // 首字母大写
        char c = Character.toUpperCase(str.charAt(0));
        // 截取首字母以外的文字
        String substring = str.substring(1);
        return c + substring;
    }

    public static void main(String[] args) {
        method04();
    }
}
